/**
 * 给你一个整数数组 nums ，判断这个数组中是否存在长度为 3 的递增子序列。
 * 如果存在这样的三元组下标 (i, j, k) 且满足 i < j < k ，使得 nums[i] < nums[j] < nums[k] ，返回 true ；
 * 否则，返回 false 。
 */

/**
 * @param {number[]} nums
 * @return {boolean}
 */
var increasingTriplet = function(nums) {
    /**
     * 1. 定义两个变量，分别存储最小值和次小值
     * 2. 遍历数组，如果当前值小于最小值，则更新最小值
     * 3. 如果当前值大于最小值，小于次小值，则更新次小值
     * 4. 如果当前值大于次小值，则返回true
     * 5. 遍历结束，返回false
     * 
     * Number.MAX_SAFE_INTEGER: js中的最大安全整数, 用于初始化min和mid
     */
    let min = Number.MAX_SAFE_INTEGER;
    let mid = Number.MAX_SAFE_INTEGER;

    for (let i = 0;i < nums.length;i ++) {
        if (nums[i] <= min) {
            min = nums[i];
        } else if (nums[i] <= mid) {
            mid = nums[i];
        } else {
            return true;
        }
    }
    return false;
};

console.log(increasingTriplet([1,2,3,4,5])); // true
console.log(increasingTriplet([5,4,3,2,1])); // false
console.log(increasingTriplet([2,1,5,0,4,6])); // true